gtk4.git
8 years agoMore work on the dnd demo
Matthias Clasen [Thu, 7 Dec 2017 04:10:56 +0000 (23:10 -0500)]
More work on the dnd demo

Still no dnd in the drag-and-drop demo...

8 years agopaned: Restrict picking to allocation
Timm Bäder [Wed, 6 Dec 2017 07:23:03 +0000 (08:23 +0100)]
paned: Restrict picking to allocation

Same reason as GtkViewport does it: We might allocate child widgets
outside of the paned's content allocation. For drawing, we add a clip
node.

This was causing the "Record" button in the inspector recorder to ignore
pointer events since the treeview column header label in the GtkPaned
was swallowing it.

8 years agoRemove all gtk_widget_get_content_size usages
Timm Bäder [Wed, 6 Dec 2017 06:56:12 +0000 (07:56 +0100)]
Remove all gtk_widget_get_content_size usages

And remove the function itself. Make everything use gtk_widget_get_width
and gtk_widget_get_height instead.

8 years agoAdd some copy-paste for widgets demo
Matthias Clasen [Wed, 6 Dec 2017 01:45:39 +0000 (17:45 -0800)]
Add some copy-paste for widgets demo

Not sure this is quite right yet.

8 years agoStart a dnd demo
Matthias Clasen [Wed, 6 Dec 2017 00:22:06 +0000 (16:22 -0800)]
Start a dnd demo

Nothing to see yet.

8 years agoUpdate gtk docs for recent changes
Matthias Clasen [Tue, 5 Dec 2017 16:56:09 +0000 (08:56 -0800)]
Update gtk docs for recent changes

Clipboards are gone, textures appear...

8 years agoDrop get/set_scale_factor from gsk docs
Matthias Clasen [Tue, 5 Dec 2017 16:37:18 +0000 (08:37 -0800)]
Drop get/set_scale_factor from gsk docs

They no longer exist.

8 years agobroadway: Add broadway_server_lookup_surface helper
Alexander Larsson [Tue, 5 Dec 2017 15:10:06 +0000 (16:10 +0100)]
broadway: Add broadway_server_lookup_surface helper

8 years agobroadway: Make the use of next_texture_id clearer
Alexander Larsson [Tue, 5 Dec 2017 14:54:36 +0000 (15:54 +0100)]
broadway: Make the use of next_texture_id clearer

It used to actually be pre-incremented, so meant like "one before
next id".

8 years agobroadway: Use "surface" instead of window/toplevel for browser object
Alexander Larsson [Tue, 5 Dec 2017 13:38:57 +0000 (14:38 +0100)]
broadway: Use "surface" instead of window/toplevel for browser object

Als fixes indentation/tabs and removes some unused code.

8 years agobroadway: Remove references to unused BROADWAY_EVENT_DELETE_NOTIFY
Alexander Larsson [Tue, 5 Dec 2017 13:32:56 +0000 (14:32 +0100)]
broadway: Remove references to unused BROADWAY_EVENT_DELETE_NOTIFY

8 years agobroadway: Remove now unused toplevel surface
Alexander Larsson [Mon, 4 Dec 2017 14:04:48 +0000 (15:04 +0100)]
broadway: Remove now unused toplevel surface

8 years agoautocleanups: allow g_autoptr() usage with GtkTreePath
Christian Hergert [Tue, 5 Dec 2017 03:22:40 +0000 (19:22 -0800)]
autocleanups: allow g_autoptr() usage with GtkTreePath

As the summary says, this allows using g_autoptr(GtkTreePath). This is
useful for API that uses out parameters for GtkTreePath that need to be
freed.

https://bugzilla.gnome.org/show_bug.cgi?id=791234

8 years agoEnsure that the path is always set
Emmanuele Bassi [Tue, 5 Dec 2017 11:07:46 +0000 (11:07 +0000)]
Ensure that the path is always set

We are using `path` unconditionally, but it can be conditionally filled.
To avoid inconsistent internal state, and a compiler warning, let's
assert that the variable is always set.

8 years agoFix the build
Emmanuele Bassi [Tue, 5 Dec 2017 11:02:20 +0000 (11:02 +0000)]
Fix the build

Use the right argument name in the preconditions check.

8 years agogdk: Documentation improvements
Matthias Clasen [Tue, 5 Dec 2017 07:52:48 +0000 (23:52 -0800)]
gdk: Documentation improvements

8 years agodocs: Drop some no longer existing functions
Matthias Clasen [Tue, 5 Dec 2017 04:38:04 +0000 (20:38 -0800)]
docs: Drop some no longer existing functions

8 years agoRevert "clipboard: Add gdk_clipboard_set()"
Matthias Clasen [Tue, 5 Dec 2017 07:09:54 +0000 (23:09 -0800)]
Revert "clipboard: Add gdk_clipboard_set()"

This reverts commit dc50e0637ffa8bc7a369d00a5d8e7656d03c3781.

This broke the build.

8 years agoclipboard: Add gdk_clipboard_set()
Benjamin Otte [Tue, 5 Dec 2017 04:16:49 +0000 (05:16 +0100)]
clipboard: Add gdk_clipboard_set()

This API allows specifying a GType and va_args of a value of that type
to set the clipboard contents. This massively simplifies setting weird
object types into the clipboard.
2 example patches included in this patch are the GtkTextBuffer and the
file list in the file chooser.

Using gobject-introspection, this should work without specifying the
type, so that you can literlally say
  clipboard.set ("Hello World")
or
  clipboard.set (pixbuf)
which is why I've also marked all other setters as (skip). They just
exist in C as wrappers for type safety reasons.

8 years agodnd: Remove x/y coordinates from drag-data-received
Benjamin Otte [Tue, 5 Dec 2017 03:06:20 +0000 (04:06 +0100)]
dnd: Remove x/y coordinates from drag-data-received

This is in preparation of using input streams to show that these
coordinates aren't needed most of the time and can otherwise be saved
during GtkWidget::drag-drop.

8 years agoExpand the docs
Matthias Clasen [Tue, 5 Dec 2017 00:18:24 +0000 (16:18 -0800)]
Expand the docs

Cross-reference the serializers.

8 years agoDocument gdk_content_provider_contents_changed
Matthias Clasen [Tue, 5 Dec 2017 00:08:32 +0000 (16:08 -0800)]
Document gdk_content_provider_contents_changed

8 years agogdk: Expand the clipboard documentation
Matthias Clasen [Tue, 5 Dec 2017 00:06:02 +0000 (16:06 -0800)]
gdk: Expand the clipboard documentation

8 years agogdk: Fill in some blanks in the docs
Matthias Clasen [Mon, 4 Dec 2017 23:58:30 +0000 (15:58 -0800)]
gdk: Fill in some blanks in the docs

This is just an initial cut; more work is needed.

8 years agoAdd a long description for GdkTexture
Matthias Clasen [Mon, 4 Dec 2017 19:04:02 +0000 (11:04 -0800)]
Add a long description for GdkTexture

8 years agoMove GdkGrabStatus docs
Matthias Clasen [Mon, 4 Dec 2017 18:35:51 +0000 (10:35 -0800)]
Move GdkGrabStatus docs

This enum was the odd man out in the initialization docs.
Move it to GdkSeat where grabbing happens nowadays.

8 years agoAdd new stuff to the gdk docs
Matthias Clasen [Mon, 4 Dec 2017 18:03:40 +0000 (10:03 -0800)]
Add new stuff to the gdk docs

Document all the things.

8 years agoFix the gdk doc build
Matthias Clasen [Mon, 4 Dec 2017 18:00:44 +0000 (10:00 -0800)]
Fix the gdk doc build

Some types don't exist anymore.

8 years agoswitch: Remove unused variable
Timm Bäder [Mon, 4 Dec 2017 11:52:50 +0000 (12:52 +0100)]
switch: Remove unused variable

8 years agowayland: Initialize variable
Benjamin Otte [Mon, 4 Dec 2017 17:28:14 +0000 (18:28 +0100)]
wayland: Initialize variable

Otherwise we get NULL-warnings when we try to use (read: unref) it.

8 years agoactionbar: Add more docs for gtk_action_bar_get_revealed
Matthias Clasen [Fri, 1 Dec 2017 23:01:57 +0000 (15:01 -0800)]
actionbar: Add more docs for gtk_action_bar_get_revealed

This stops gtk-doc complaints.

8 years agoabout dialog: Add some missing docs
Matthias Clasen [Fri, 1 Dec 2017 23:00:39 +0000 (15:00 -0800)]
about dialog: Add some missing docs

gtk_about_dialog_set/get_system_information are new,
and were missing docs.

8 years agodocs: Remove gtk_application_is_inhibited
Matthias Clasen [Fri, 1 Dec 2017 22:58:33 +0000 (14:58 -0800)]
docs: Remove gtk_application_is_inhibited

It doesn't exist anymore.

8 years agoRemove some more gtk_widget_get_content_size uses
Timm Bäder [Mon, 4 Dec 2017 11:42:52 +0000 (12:42 +0100)]
Remove some more gtk_widget_get_content_size uses

8 years agowidgetbowl: Add some more widget types
Timm Bäder [Sun, 3 Dec 2017 18:03:48 +0000 (19:03 +0100)]
widgetbowl: Add some more widget types

8 years agotestswitch: Remove unnecessary gtk_widget_show calls
Timm Bäder [Sat, 2 Dec 2017 10:27:02 +0000 (11:27 +0100)]
testswitch: Remove unnecessary gtk_widget_show calls

8 years agoimage: Stop using gtk_widget_get_content_size
Timm Bäder [Mon, 4 Dec 2017 11:14:21 +0000 (12:14 +0100)]
image: Stop using gtk_widget_get_content_size

8 years agopopover: Stop using gtk_widget_get_content_size
Timm Bäder [Thu, 23 Nov 2017 10:29:47 +0000 (11:29 +0100)]
popover: Stop using gtk_widget_get_content_size

8 years agospinner: Stop using gtk_widget_get_content_size
Timm Bäder [Sun, 3 Dec 2017 18:00:09 +0000 (19:00 +0100)]
spinner: Stop using gtk_widget_get_content_size

8 years agogsk: Remove gsk_render_node_set_scaling_filters()
Benjamin Otte [Sun, 3 Dec 2017 20:56:24 +0000 (21:56 +0100)]
gsk: Remove gsk_render_node_set_scaling_filters()

This is a leftover from the very early rendernode that we forgot to delete.

This can be seen by the fact that it is settable on an immutable object.

8 years agoUse Unicode quotation marks in new strings
Piotr Drąg [Sun, 3 Dec 2017 17:38:39 +0000 (18:38 +0100)]
Use Unicode quotation marks in new strings

See https://developer.gnome.org/hig/stable/typography.html

https://bugzilla.gnome.org/show_bug.cgi?id=772371

8 years agoUpdate POTFILES.in
Piotr Drąg [Sun, 3 Dec 2017 17:24:36 +0000 (18:24 +0100)]
Update POTFILES.in

8 years agoGDK W32: Remove stray debug code
Руслан Ижбулатов [Sun, 3 Dec 2017 06:08:44 +0000 (06:08 +0000)]
GDK W32: Remove stray debug code

I have no idea how this slipped into master (these two lines are not present
in the same commit that went into gtk-3-22).

8 years agodnd: Remove unused variables
Benjamin Otte [Sun, 3 Dec 2017 05:50:51 +0000 (06:50 +0100)]
dnd: Remove unused variables

8 years agoRemove GdkDragProtocol from the api
Matthias Clasen [Thu, 24 Aug 2017 21:40:16 +0000 (17:40 -0400)]
Remove GdkDragProtocol from the api

...together with apis that return it. We were not using this
information in GTK+ at all, so no need to provide it.

8 years agoDrop api that is only for unmanaged dnd
Matthias Clasen [Thu, 24 Aug 2017 18:30:47 +0000 (14:30 -0400)]
Drop api that is only for unmanaged dnd

These functions are not needed as public api anymore.

8 years agodnd: Handle rootwin drop in gdk
Matthias Clasen [Sun, 3 Dec 2017 05:22:25 +0000 (06:22 +0100)]
dnd: Handle rootwin drop in gdk

This lets us drop the only use of the drag protocol in gtk.

8 years agodnd: Remove much of the unmanaged dnd
Matthias Clasen [Wed, 23 Aug 2017 19:50:17 +0000 (15:50 -0400)]
dnd: Remove much of the unmanaged dnd

8 years agowayland: Add primary clipboard subclass
Benjamin Otte [Sun, 3 Dec 2017 04:39:08 +0000 (05:39 +0100)]
wayland: Add primary clipboard subclass

I decided to put this in a custom subclass, because then I could keep
the whole gtk primary protocol self-contained.

The other option would have been reusing GdkWaylandClipboard, but that
didn't seem worth it, especially because that code needs to interact
with the DND machinery, while the primary doesn't.

8 years agowayland: Implement taking over the clipboard
Benjamin Otte [Sun, 3 Dec 2017 02:51:43 +0000 (03:51 +0100)]
wayland: Implement taking over the clipboard

The clipboard is now complete.
That was fast.

8 years agowayland: Implement reading the clipboard
Benjamin Otte [Sun, 3 Dec 2017 01:48:17 +0000 (02:48 +0100)]
wayland: Implement reading the clipboard

We now keep track of what's in the clipboard and allow people to read
its contents.

8 years agowayland: Add skeleton for a GdkClipboardWayland
Benjamin Otte [Sat, 2 Dec 2017 20:54:36 +0000 (21:54 +0100)]
wayland: Add skeleton for a GdkClipboardWayland

Creates the source file and a custom subclass and makes sure it's used
by GDK.

8 years agogdk: Get rid of owner change events
Benjamin Otte [Sat, 2 Dec 2017 15:05:53 +0000 (16:05 +0100)]
gdk: Get rid of owner change events

They're unused now.

8 years agogtk: Remove GtkClipboard
Benjamin Otte [Sat, 2 Dec 2017 14:42:12 +0000 (15:42 +0100)]
gtk: Remove GtkClipboard

8 years agoicon-browser: Port to new clipboard
Benjamin Otte [Sat, 2 Dec 2017 14:41:22 +0000 (15:41 +0100)]
icon-browser: Port to new clipboard

8 years agogtk-demo: Port to GdkClipboard
Benjamin Otte [Sat, 2 Dec 2017 13:39:37 +0000 (14:39 +0100)]
gtk-demo: Port to GdkClipboard

8 years agoclipboard: Change image convenience APIs
Benjamin Otte [Sat, 2 Dec 2017 13:38:57 +0000 (14:38 +0100)]
clipboard: Change image convenience APIs

Don't use pixbufs anymore, use textures.

8 years agogdk: Add (de)serializers for GDK_TYPE_TEXTURE
Benjamin Otte [Sat, 2 Dec 2017 13:36:57 +0000 (14:36 +0100)]
gdk: Add (de)serializers for GDK_TYPE_TEXTURE

We want to use textures more, so we should be able to use them for
copy/paste and dnd.

8 years agox11: Handle case where clipboard was reclaimed quickly
Benjamin Otte [Fri, 1 Dec 2017 06:42:36 +0000 (07:42 +0100)]
x11: Handle case where clipboard was reclaimed quickly

When the reply to a TARGETS request comes in, the clipboard may already
be reclaimed by the local app. Deal with that case (in an ugly way,
strictly speaking we should use a cancellable here).

This happens for example at startup when the initial TARGETS requests
have not been answered until after the main widow popped up. And if such
a window immediately claims the primary clipboard (like when the initial
focus is inside an entry), this race will happen.

8 years agoentry: Port to GdkClipboard
Benjamin Otte [Fri, 1 Dec 2017 06:21:21 +0000 (07:21 +0100)]
entry: Port to GdkClipboard

8 years agox11: Implement storing the clipboard
Benjamin Otte [Fri, 1 Dec 2017 05:20:28 +0000 (06:20 +0100)]
x11: Implement storing the clipboard

8 years agox11: Implement MULTIPLE requests
Benjamin Otte [Fri, 1 Dec 2017 05:06:53 +0000 (06:06 +0100)]
x11: Implement MULTIPLE requests

8 years agotests: Don't crash if widgets go away before clipboard
Benjamin Otte [Fri, 1 Dec 2017 05:05:07 +0000 (06:05 +0100)]
tests: Don't crash if widgets go away before clipboard

Don't g_signal_connect() to the clipboard without protection - the
clipboard might outlast you and still emit signals.

8 years agox11: Introduce GdkX11PendingSelectionNotify
Benjamin Otte [Fri, 1 Dec 2017 01:53:47 +0000 (02:53 +0100)]
x11: Introduce GdkX11PendingSelectionNotify

This object tracks the SelectionNotifyEvent that has to be sent in
response to a SelectionRequest.

Currently it just looks like code reshuffling, but it's a prerequisite
for handling MULTIPLE, which requires to only send the notify after
every stream has writtten at least once.

But anyway, code is cleaner now, so it's a win!

8 years agox11: Split out a function
Benjamin Otte [Thu, 30 Nov 2017 23:02:12 +0000 (00:02 +0100)]
x11: Split out a function

This will be necessary for MULTIPLE handling.

8 years agomain: Implement storing all clipboards
Benjamin Otte [Thu, 30 Nov 2017 00:05:02 +0000 (01:05 +0100)]
main: Implement storing all clipboards

8 years agoapplication: Put shared code into a common function
Benjamin Otte [Wed, 29 Nov 2017 23:09:37 +0000 (00:09 +0100)]
application: Put shared code into a common function

8 years agoclipboard: Add infrastructure to store clipboards
Benjamin Otte [Wed, 29 Nov 2017 22:23:36 +0000 (23:23 +0100)]
clipboard: Add infrastructure to store clipboards

Clipboard managers will be so happy once the backends actually implement
it!

8 years agocontentprovider: Add ref_storable_formats()
Benjamin Otte [Wed, 29 Nov 2017 09:07:52 +0000 (10:07 +0100)]
contentprovider: Add ref_storable_formats()

This is to be used for advocating to clipboard managers.

8 years agofilechooserwidget: Port to new clipboard
Benjamin Otte [Wed, 29 Nov 2017 08:52:38 +0000 (09:52 +0100)]
filechooserwidget: Port to new clipboard

We use the new GDK_TYPE_FILE_LIST here.

8 years agogdk: Add GDK_TYPE_FILE_LIST with serializers
Benjamin Otte [Wed, 29 Nov 2017 08:37:50 +0000 (09:37 +0100)]
gdk: Add GDK_TYPE_FILE_LIST with serializers

This is a GSList of GFile and we want it so we can operate with lists of
files and text/uri-list.

I chose GSList over GList because that's what the GtkFileChooser API
uses, too.

8 years agogdk: Add serializers and deserializers for GFile
Benjamin Otte [Wed, 29 Nov 2017 07:13:06 +0000 (08:13 +0100)]
gdk: Add serializers and deserializers for GFile

in particular, support:
GFile <=> text/uri-list
GFile  => text/plain

8 years agotests: Improve formats list for testclipboard2
Benjamin Otte [Tue, 28 Nov 2017 03:00:31 +0000 (04:00 +0100)]
tests: Improve formats list for testclipboard2

8 years agolabel: Port to new clipboard
Benjamin Otte [Tue, 28 Nov 2017 01:36:16 +0000 (02:36 +0100)]
label: Port to new clipboard

8 years agotextview: Redo clipboard handling
Benjamin Otte [Tue, 28 Nov 2017 01:09:21 +0000 (02:09 +0100)]
textview: Redo clipboard handling

Instead of using GtkClipboard and handling everything ourselves, we now
put GtkTextBuffer into the GdkClipboard and register (de)serializers for
text/plain.

8 years agogdk: Add gdk_content_formats_new_for_gtype()
Benjamin Otte [Tue, 28 Nov 2017 01:02:06 +0000 (02:02 +0100)]
gdk: Add gdk_content_formats_new_for_gtype()

Many places create formats for a single tpye, so make it easy for them
to get this without having to create a builder first.

8 years agogdk: Allow setting task data on (de)serializers
Benjamin Otte [Tue, 28 Nov 2017 00:58:56 +0000 (01:58 +0100)]
gdk: Allow setting task data on (de)serializers

This mirrors GTask.

8 years agogtk-demo: Port clipboards example to new clipboard
Benjamin Otte [Sun, 26 Nov 2017 21:39:47 +0000 (22:39 +0100)]
gtk-demo: Port clipboards example to new clipboard

8 years agorecentchooser: Port to GdkClipboard
Benjamin Otte [Sun, 26 Nov 2017 06:54:55 +0000 (07:54 +0100)]
recentchooser: Port to GdkClipboard

8 years agolinkbutton: Port to GdkClipboard
Benjamin Otte [Sun, 26 Nov 2017 06:38:12 +0000 (07:38 +0100)]
linkbutton: Port to GdkClipboard

8 years agoa11y: Port to GdkClipboard
Benjamin Otte [Sun, 26 Nov 2017 06:35:19 +0000 (07:35 +0100)]
a11y: Port to GdkClipboard

8 years agowidget: Add gtk_widget_get_clipboard()
Benjamin Otte [Sat, 25 Nov 2017 22:55:34 +0000 (23:55 +0100)]
widget: Add gtk_widget_get_clipboard()

... and gtk_widget_get_primary_clipboard().

They both give out the new GdkClipboard.

8 years agowidget: gtk_widget_get_clipboard => gtk_widget_get_old_clipboard
Benjamin Otte [Sat, 25 Nov 2017 22:20:16 +0000 (23:20 +0100)]
widget: gtk_widget_get_clipboard => gtk_widget_get_old_clipboard

Just rename the function, so the previous one can be used for the
new clipboard.

8 years agotests: Open a 2nd display in testclipboard2
Benjamin Otte [Sat, 25 Nov 2017 21:54:32 +0000 (22:54 +0100)]
tests: Open a 2nd display in testclipboard2

This allows testing local transfer of data as well as remote transfer
(by transferring data between clipboards of both Displays).

8 years agox11: Implement claiming the X Selection with the clipboard
Benjamin Otte [Sat, 25 Nov 2017 20:59:39 +0000 (21:59 +0100)]
x11: Implement claiming the X Selection with the clipboard

... and of course support writing to other apps.

8 years agotests: Add possibility to set invalid UTF-8 and clear clipboard
Benjamin Otte [Sat, 25 Nov 2017 07:37:03 +0000 (08:37 +0100)]
tests: Add possibility to set invalid UTF-8 and clear clipboard

8 years agox11: Add gdk_x11_display_get_max_request_size()
Benjamin Otte [Sat, 25 Nov 2017 00:25:31 +0000 (01:25 +0100)]
x11: Add gdk_x11_display_get_max_request_size()

There's multiple places in the clipboard code where I need it, so make
it a custom function.

8 years agoclipboard: Allow claiming the clipboard to fail
Benjamin Otte [Fri, 24 Nov 2017 19:42:40 +0000 (20:42 +0100)]
clipboard: Allow claiming the clipboard to fail

Also make clipboard_claim() a vfunc so backends can override it.

Because the whole operation a vfunc, backends have the option of adding
code before the actual claim is done and potentially even fail or do
something after the successful claim.

8 years agogdkcontentformats: Change the matching API
Benjamin Otte [Fri, 24 Nov 2017 10:34:19 +0000 (11:34 +0100)]
gdkcontentformats: Change the matching API

Instead of having just one function that has the gtype and mime type as
out arguments, have 3 functions: 1 that finds any match, 1 that finds a
GType match and one for a mime type match.

This makes the API way more convenient to use.

8 years agoclipboard: Add serialization
Benjamin Otte [Fri, 24 Nov 2017 10:15:51 +0000 (11:15 +0100)]
clipboard: Add serialization

This completes the local clipboard code.

8 years agoclipboard: Implement local fallback clipboard transfers
Benjamin Otte [Fri, 24 Nov 2017 09:13:23 +0000 (10:13 +0100)]
clipboard: Implement local fallback clipboard transfers

This requires implementing a "pipe" so we can have 2 streams running:
  contentprovider => serializer => outputstream
  inputstream => deserializer => reader
And the pipe shoves the data from the outputstream into the inputstream.

8 years agoclipboard: Introduce GdkContentProvider
Benjamin Otte [Fri, 24 Nov 2017 05:17:37 +0000 (06:17 +0100)]
clipboard: Introduce GdkContentProvider

GdkContentProvider is the object that represents local data in the
clipboard.

This patch only introduces the object and adds the clipboard properties,
it does not yet provide a way for the actual implementations to access
it.

The only access that is implemented is the local shortcut GValue access.

8 years agoclipboard: Make value getters set the passed in value
Benjamin Otte [Fri, 24 Nov 2017 05:07:09 +0000 (06:07 +0100)]
clipboard: Make value getters set the passed in value

Don't return a const GValue, that's ugly API. Instead require people to
pass in a preinitialized GValue and set that one.

8 years agox11: Improve fallbacks for text
Benjamin Otte [Thu, 23 Nov 2017 00:59:19 +0000 (01:59 +0100)]
x11: Improve fallbacks for text

(1) Try all passed in formats in order if one of them fails.
(2) Don't blindly accept all formats, make sure they are mime types
(3) Add a bunch of special non-mime types that plug converters to
    get to mime types

8 years agoclipboard: Add gdk_clipboard_read_text_async()
Benjamin Otte [Wed, 22 Nov 2017 13:19:02 +0000 (14:19 +0100)]
clipboard: Add gdk_clipboard_read_text_async()

Also add deserializers for G_TYPE_STRING.

8 years agoclipboard: Add gdk_clipboard_read_pixbuf_async()
Benjamin Otte [Wed, 22 Nov 2017 12:21:25 +0000 (13:21 +0100)]
clipboard: Add gdk_clipboard_read_pixbuf_async()

8 years agogdk: Im[plement content deserializing
Benjamin Otte [Wed, 22 Nov 2017 09:44:30 +0000 (10:44 +0100)]
gdk: Im[plement content deserializing

Add infrastructure to do GInputStream => GType conversions. Use that to
implement gdk_clipboard_read_value() which reads into GValues.

8 years agox11: Improve debugging output for selection input stream
Benjamin Otte [Wed, 22 Nov 2017 09:43:04 +0000 (10:43 +0100)]
x11: Improve debugging output for selection input stream

8 years agoclipboard: Refactor gdk_clipboard_read() to be async
Benjamin Otte [Wed, 22 Nov 2017 08:25:35 +0000 (09:25 +0100)]
clipboard: Refactor gdk_clipboard_read() to be async

This allows us not just to pass any mime type to the read function, but
it also makes it possible to pass multiple mime types and the clipboard
can then try them in order until it finds a supported one.

This is so far not implemented though.

8 years agox11: Use async queue and implement sync reads on selections stream
Benjamin Otte [Mon, 20 Nov 2017 20:29:32 +0000 (21:29 +0100)]
x11: Use async queue and implement sync reads on selections stream

Turns out, way too many async operations are implemented by running the
sync operation in a thread. The easiest solution is to support that is
to use a GAsyncQueue for the buffers and deadlock if called from the
main thread.